package juegoPlantaVsZombies;

import java.util.List;

public class Juego {
	private JardinZen jardinZen;
	private Jardin miJardin;
	private AlmanaqueZombie almanaqueZombie;
	private int recursos;
	private List<Planta> plantasDePremios;
	
	// ------------------------------------------------- //
	// GETTERS Y SETTERS
	

	public Jardin getMiJardin() {
		return miJardin;
	}

	public void setMiJardin(Jardin miJardin) {
		this.miJardin = miJardin;
	}
	
	public List<Planta> getPlantasDePremios() {
		return plantasDePremios;
	}

	public void setPlantasDePremios(List<Planta> plantasDePremios) {
		this.plantasDePremios = plantasDePremios;
	}
	
	public JardinZen getJardinZen() {
		return jardinZen;
	}

	public void setJardinZen(JardinZen jardinZen) {
		this.jardinZen = jardinZen;
	}

	public AlmanaqueZombie getAlmanaqueZombie() {
		return almanaqueZombie;
	}

	public void setAlmanaqueZombie(AlmanaqueZombie almanaqueZombie) {
		this.almanaqueZombie = almanaqueZombie;
	}

	public int getRecursos() {
		return recursos;
	}

	public void setRecursos(int recursos) {
		this.recursos = recursos;
	}
	
	// ------------------------------------------------- //
	// METODOS
	
	
	public void mandarZombieAAtacar(Fila fila, Zombie zombie) {
		
		zombie.enfrentarFila(fila);
		
		// Checkeo de final de juego
		if(!(zombie.sigoCaminando())){
			System.out.println("Tus plantas han resistido el ataque");
			this.calcularRecompensa(zombie);
		}
		else {
			System.out.println("GAME OVER - HAN COMIDO TU CEREBRO");
		}
	}
	
	public void calcularRecompensa(Zombie zombie){
		double random = (Math.random());
		if(random < 0.5) {
			this.darPremio(zombie);
		}
		else {
			System.out.println("Este zombie no ha dado recompensa");
		}
	}
	
	public void darPremio(Zombie zombie){
		double random = (Math.random());
		if(random < 0.25) {
			this.darPremioPlanta();
		}
		else {			
			Zombie zombRes = this.getAlmanaqueZombie().obtenerZombieConNombre(zombie);
			int resistZ = zombRes.getResistencia()/3;
			int premio = 1 + (int)(Math.random() * ((resistZ - 1) + 1));
			this.setRecursos(premio + this.getRecursos());
		}
	}
	
	public void darPremioPlanta(){
		
		int premio = 1 + (int)(Math.random() * ((this.getPlantasDePremios().size()- 1) + 1));
		
		Planta plantaPremio = this.getPlantasDePremios().get(premio - 1);
		
		this.getJardinZen().tengoEstaPlanta(plantaPremio);
	}
	
	public void plantar(int fila, int celda, Planta planta) {
		if(this.getMiJardin().sePuedePlantar(fila, celda, planta.esTerrestre())){
			this.getMiJardin().plantar(fila, celda, planta);
		}
		else{
			System.out.println("El lugar esta ocupado por otra planta");
		}
	}
}
